#include <bits/stdc++.h>

using namespace std;
//deque FIFO (First In First  Out) 双端队列（允许头部、尾部加入元素，也允许头部/尾部弹出元素 ）
int data[1000], head = 500, tail = head - 1;//data[head..tail]构成了一个双端队列
//1 2 3 4 5 依次进队
//重复输出队头元素 直到队列为空
//队列的常见操作

//1. 初始化空队列init  head=n/2,tail=head-1;
//2a. 尾部进队 push_back data[++tail]=x;
//2b. 头部进队 push_front data[--head]=x;
//3a. 头部出队 pop_front head++;
//3b. 尾部出队 pop_back  tail--;
//4a. 查询队头 front（不弹出) data[head]
//4b. 查询队尾 back（不弹出) data[tail]

#include<vector>
#include<stack>
#include<queue>
#include<deque>

int main() {
    head = 500, tail = head - 1; //
    data[++tail] = 1; //1 进队
    data[--head] = 2; //2进队
    data[++tail] = 3; //3 进队
    data[--head] = 4; //4进队
    data[++tail] = 5; //5 进队

    while (head <= tail) {
        cout << data[tail];
        --tail;
    }

    return 0;
}